[BLKTAP] Find major number by searching sysfs
authorkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 29 Sep 2006 13:55:57 +0000 (14:55 +0100)
committerkfraser@localhost.localdomain <kfraser@localhost.localdomain>
Fri, 29 Sep 2006 13:55:57 +0000 (14:55 +0100)
instead of reading /proc/devices.

Signed-off-by: Steven Rostedt <srostedt@redhat.com>
tools/blktap/drivers/Makefile
tools/blktap/drivers/blktapctrl.c

index 7c7d4ab27cd8ddb1a4dc8a3d18a6272356edaa5e..ee2b4b3d88b720dfab9fca6452fad25ecd727267 100644 (file)
@@ -28,7 +28,7 @@ DEPS     = .*.d
 THREADLIB := -lpthread -lz
 LIBS      := -L. -L.. -L../lib
 LIBS      += -L$(XEN_LIBXC)
-LIBS      += -lblktap
+LIBS      += -lblktap -lxenctrl
 LIBS      += -lcrypto
 LIBS      += -lz
 LIBS      += -L$(XEN_XENSTORE) -lxenstore
index 9f1df3cca81e0ba576dbd603ac65465903ca9f27..60d999c78d1fbd8e27d2105ee4379362aaacbc46 100644 (file)
@@ -636,30 +636,6 @@ static void print_drivers(void)
                DPRINTF("Found driver: [%s]\n",dtypes[i]->name);
 } 
 
-static int find_blktap_major(void)
-{
-       FILE *fp;
-       int major;
-       char device[256];
-
-       if ((fp = fopen("/proc/devices", "r")) == NULL)
-               return -1;
-
-       /* Skip title */
-       fscanf(fp,"%*s %*s\n");
-       while (fscanf(fp, "%d %255s\n", &major, device) == 2) {
-               if (strncmp("blktap", device, 6) == 0)
-                       break;
-       }
-
-       fclose(fp);
-
-       if (strncmp("blktap", device, 6) == 0)
-               return major;
-
-       return -1;
-}
-
 int main(int argc, char *argv[])
 {
        char *devname;
@@ -681,11 +657,11 @@ int main(int argc, char *argv[])
        register_new_devmap_hook(map_new_blktapctrl);
        register_new_unmap_hook(unmap_blktapctrl);
 
-       /*Attach to blktap0 */  
+       /* Attach to blktap0 */
        asprintf(&devname,"%s/%s0", BLKTAP_DEV_DIR, BLKTAP_DEV_NAME);
-       blktap_major = find_blktap_major();
-       if (blktap_major < 0)
+       if ((ret = xc_find_device_number("blktap0")) < 0)
                goto open_failed;
+       blktap_major = major(ret);
        make_blktap_dev(devname,blktap_major,0);
        ctlfd = open(devname, O_RDWR);
        if (ctlfd == -1) {